In most, if not all, computer systems, one of the most frequently performed tasks is that of storage access. Whether it be for accessing instructions or data, or reading or writing information, computer systems need to access storage media such as memory, magnetic media, and optical media in order to operate. Because storage access operations are performed so frequently, any efficiencies that can be gained in the accessing process can significantly improve system performance. Conversely, any inefficiencies that are injected into the process can significantly degrade system performance.
Currently, a storage medium can be accessed using one of several known methodologies. The first and most general methodology involves the provision, by a host, of an address for each location in the storage medium that is to be accessed. In this context, the term host is used broadly to mean any entity that can access the storage medium, including an internal processor, an external processor or system, and any other entity. According to this methodology, each time a host wishes to access a location in the storage medium, the host sends an access request. Included in this access request is an address that specifically identifies the location to be accessed. Once received, the address is applied to the storage medium to access the appropriate location. To access another location, the entire process is repeated.
This methodology is effective for accessing any location in the storage medium. However, it is disadvantageous in that it incurs a significant amount of overhead. Specifically, note that for each and every access, the host needs to make a request. This overhead, referred to herein as "set up", is relatively resource intensive and should be avoided if at all possible.
In certain situations, it is possible to minimize the set up that needs to be done to access a storage medium. One such situation is where multiple contiguous locations are to be accessed. For such a situation, a second known methodology, typically referred to as burst mode, can be applied. With burst mode, a host can access multiple contiguous locations with a single access request. The form of the request needs to be augmented, however. Specifically, the request needs to specify an address for the location at which access is to begin, and a length indicating the number of times the storage medium is to be accessed. Once the request is received by a burst mode enabled storage system, the address and the length are stored. Then, the stored address is applied to the storage medium to access the first desired location. To access the second location, the stored address is simply incremented by one address since the second location is contiguous to the first. Then, the incremented address is applied to the storage medium to access the second location. This process is repeated until the storage medium has been accessed the desired number of times. Note that in burst mode, set up is performed only once, at the beginning of the burst cycle. Unlike the general methodology, it is not performed for each and every location. Thus, burst mode significantly reduces the amount of overhead that is incurred in accessing a storage medium. The longer the length specified in the access request, the greater the savings in overhead.
While burst mode is advantageous, it is currently quite limited in its application. The current burst mode methodology cannot be used in many situations in which it would be advantageous to implement burst mode. One such situation is shown in FIG. 1, wherein information is stored in the form of an array having m rows and n columns. Such an array is typically stored in a storage medium in the form shown in FIG. 2, wherein the entire array is stored as a contiguous string of storage locations. In many applications, it is desirable to access only the information in a particular column of an array (e.g. col. 1). To achieve such an access for the array shown in FIG. 1, it would be necessary to access every nth storage location, as shown in FIG. 2. Since these locations are not contiguous, however, the current burst mode methodology cannot be use. Instead, the general methodology, with its high associated overhead, would have to be employed. This is not a wholly satisfactory solution.